package StreamCode;

import java.util.*;
import java.util.function.Function;
import java.util.function.IntFunction;
import java.util.stream.Collectors;

public class StreamCode2 {
    public static void main(String[] args) {
        /**
         * collect(Collector collector) 收集流中的数据，放到集合中
         * */
//        ArrayList<String> list = new ArrayList<>();
//        Collections.addAll(list,"a-1","b-2","c-3","d-4","e-5","f-6","g-7","h-8","i-9","j-10");

//        list.stream().forEach((String s1)->{
//            System.out.println(s1);
//        });

//        list.stream().forEach(System.out::println);

        //count 统计流中元素的个数
//        long count = list.stream().count();
//        System.out.println(count);


        //toArray() 空参  把流中的元素放到数组中
//       Object[] arr= list.stream().toArray();
//       System.out.println(Arrays.toString(arr));

        /**
         * IntFunction的泛型：具体类型的数组
         * apply的形参：流中的元素的个数
         * apply的返回值：具体类型的数组
         * 方法体：就是创建数组
         * */
//        String[] array = list.stream().toArray(new IntFunction<String[]>() {
//            @Override
//            public String[] apply(int value) {
//                return new String[value];
//            }
//        });
//        System.out.println(Arrays.toString(array));

//        String[] array = list.stream().toArray((s)->new String[s]);
//        System.out.println(Arrays.toString(array));

        ArrayList<String> list = new ArrayList<>();
        Collections.addAll(list,"a-男-10","b-女-20","c-男-30","d-女-40","e-女-30","f-男-60","g-男-30","h-男-80","i-女-30","j-男-100");

//        String[] array = list.stream().filter(i->{
//            return Integer.parseInt(i.split("-")[2])==30&&i.split("-")[1].equals("男");
//        }).toArray((s)->new String[s]);
//        System.out.println(Arrays.toString(array));

//        重写toMap Function方法两个参数格式书写

        
//        toMap两个形参：
//        第一个参数：流中的元素的某个属性作为键
//        第二个参数：流中的元素的某个属性作为值
        Map<String, Integer> map = list.stream().filter(e -> "男".equals(e.split("-")[1])).collect(Collectors.toMap(new Function<String, String>() {
            @Override
            public String apply(String s) {
                System.out.println(s+"姓名");
                return s.split("-")[0];
            }
        }, new Function<String, Integer>() {
            @Override
            public Integer apply(String s) {
                return Integer.parseInt(s.split("-")[2]);
            }
        }));
        System.out.println(map);

    }
}
